package com.algorithm.liyc.practice;

import java.util.LinkedList;
import java.util.Queue;

/**
 * 用队列实现栈
 * ● push(x) -- 元素 x 入栈
 * ● pop() -- 移除栈顶元素
 * ● top() -- 获取栈顶元素
 * ● empty() -- 返回栈是否为空
 *
 * @author Liyc
 * @date 2023/12/20 15:04
 **/

public class Solution32 {
    Queue<Integer> queue;

    public Solution32() {
        queue = new LinkedList<>();
    }
    //每 offer 一个数（A）进来，都重新排列，把这个数（A）放到队列的队首
    public void push(int x) {
        queue.offer(x);
        int size = queue.size();
        //移动除了 A 的其它数
        while (size-- > 1) {
            queue.offer(queue.poll());
        }
    }

    public int pop() {
        return queue.poll();
    }

    public int top() {
        return queue.peek();
    }

    public boolean empty() {
        return queue.isEmpty();
    }
}
